package com.linkage.bss.crm.packagemgr.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.linkage.bss.commons.dao.Page;
import com.linkage.bss.commons.dao.ibatis.BaseDAO;
import com.linkage.bss.crm.packagemgr.dao.IAreaDAO;
import com.linkage.bss.crm.packagemgr.model.Area;

/**
 * 地区管理dao 接口
 *
 * @author  Administrator
 * @version  [版本号, 2013-5-9]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class AreaDAOImpl extends BaseDAO implements IAreaDAO {

	final static int AREA_LEVEL = 4;

	/**
	 * 注释内容
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 根据地区Id查询地区对象
	 * @param areaId
	 * @return
	 */
	public Area getAreaById(long areaId) {
		return (Area) getSqlMapClientTemplate().queryForObject("Area.getAreaById", areaId);
	}

	/**
	* 根据地区名称查询符合条件的地区数量
	* @param name
	* @return
	*/
	public int getAreaCountByName(String name) {

		return (Integer) getSqlMapClientTemplate().queryForObject("Area.selectAreaCountByName", name);
	}

	/**
	* 根据地区名称获取地区
	* @param name
	* @return
	*/
	public List<Area> getAreaByName(String name, Page page) {

		return queryForPageList("Area.selectAreaByName", name, page);
	}

	public List<Area> getAreaByName(String name, Integer areaID, Page page) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", name);
		map.put("aeraId", areaID);
		return queryForPageList("Area.selectAreaByMap", map, page);
	}

	public int getAreaCountByName(String name, Integer areaID) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", name);
		map.put("aeraId", areaID);
		return (Integer) getSqlMapClientTemplate().queryForObject("Area.selectAreaCountByMap", map);
	}

	public List<Area> getAreaByParentID(Integer areaId) {

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("areaLevel", AREA_LEVEL);
		map.put("aeraId", areaId);
		return getSqlMapClientTemplate().queryForList("Area.selectAreaByParentID", map);

	}

	/**
	 * 查询包发布地区
	 * @param pakcageId
	 * @return [参数说明]
	 *
	 * @return List<Area> [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public List<Area> queryPackage2Area(Long pakcageId) {

		return getSqlMapClientTemplate().queryForList("Area.queryPackage2Area", pakcageId);

	}

}
